Python汉字转拼音 您所在的位置:网站首页 python汉字转拼音 返回最后 Python汉字转拼音

Python汉字转拼音

2024-07-10 06:36| 来源: 网络整理| 查看: 265

How to Train Your Dragon(来自《驯龙高手》剧照) 为了陪孩子玩成语接龙,于是想找出那些一击必杀的成语,类似‘一个顶俩’【yí, gè,dǐng',liǎ】这种。 在网上搜索了下,从漢典网等网站上可以查询成语。另外,Github也有查询成语的API,不过为了方便,还是决定自己动手。

pypinyin与xpinyin包

Python实现汉字转拼音,常用的包是pypinyin 0.37.0和xpinyin 0.5.6两个。 另外,SnowNLP: Simplified Chinese Text Processing和小明 NLP也是有汉字转拼音功能的,但这两个包不是专注于汉字转拼音,因此相对而言比起前面提到的pypinyin和xpinyin,在拼音这一项上要弱许多,比如无法给出拼音的音调,有些不是很生僻的成语也不能给出拼音(如下图),所以只重点去试了前面提到的两个包。

xmnlp测试 snownlp测试

默认参数

总的来说,pypinyin的功能更加全面。先来看默认参数下的转拼音结果。pypinyin提供了‘slug、pinyin’和‘lazy_pinyin’三个函数,区别在于是否返回结果是否默认带音调、结果是字符串还是列表以及分隔符等区别。xpinyin则是‘get_pinyin’这一个函数,但可以通过参数来返回带音调拼音、改变分隔符等。

from pypinyin import pinyin, lazy_pinyin, slug from xpinyin import Pinyin from pypinyin import load_phrases_dict,load_single_dict, Style word = '魑魅魍魉' print('pypinyin默认参数结果:') print('\t',pinyin(word)) print('\t',lazy_pinyin(word)) print('\t',slug(word)) print('xpinyin默认参数结果:') print('\t',Pinyin().get_pinyin(word))

默认参数 本人是更习惯返回带音调的、空格符分隔的字符串结果,因此用的pypinyin包中的slug()命令更多一些,自动参数 * style=Style.TONE *(拼音带音调)和 separator=' '(空格分隔)。

slug(word, separator=' ', style=Style.TONE)

为了对比两个包的汉字转拼音结果,用《生僻字》歌词来测试的结果如下:

《生僻字》歌词结果比较 结果来看,明显pypinyin的对于多音字(比如陟罚臧否中的‘否’字、奉为圭臬中的‘为’字)。xpinyin对于生僻字无法给出结果(如𨰻字)、或是识别错误(如犄角旮旯中的‘旮旯’两字、腌臜孑孓一句中的‘腌臜’两字)。

pypinyin的heteronym参数与style参数

pypinyin作为汉字转拼音的首选python包,其中heteronym参数与style参数值得注意下。 heteronym参数是多音字模式开关参数,测试下来,我的理解设置** heteronym = True ** 后,可能在有些情况下(是pypinyin无法判断时)会将多音字所有可能的读音都列出来,如下所示,比如'好了'两字。但如果pypinyin能够判断时,heteronym参数对结果无影响,比如'小时了了,大未必佳'中的'了了'二字,pypinyin并不会返回'le le'的结果出现。

heteronym参数 style参数是旋转返回结果音调位置、声母韵母首字母还是全部等等。总之,pypinyin的style参数更为灵活,可以根据需要返回想要的结果。

style选项 参数值 返回结果 常规 Style.NORMAL su hai han chao 拼音带音调 Style.TONE sū hǎi hán cháo 音调数字位于声母韵母之间 Style.TONE2 su1 ha3i ha2n cha2o 音调数字位于韵母之后 Style.TONE3 su1 hai3 han2 chao2 声母 Style.INITIALS s h h ch 首字母 Style.FIRST_LETTER s h h c 韵母 Style.FINALS u ai an ao 韵母带音调 Style.FINALS_TONE ū ǎi án áo 韵母,音调数字位于韵母首字母之间 Style.FINALS_TONE2 u1 a3i a2n a2o 韵母,音调数字位于最后 Style.FINALS_TONE3 u1 ai3 an2 ao2 注音符 Style.BOPOMOFO ㄙㄨ ㄏㄞˇ ㄏㄢˊ ㄔㄠˊ 声母注音符 Style.BOPOMOFO_FIRST ㄙ ㄏ ㄏ ㄔ style参数 pypinyin的load_phrases_dict和load_single_dict命令

前面已经提到pypinyin的结果正确率更高,但这并不意味着pypinyin返回的结果就百分百一定正确。在将接龙成语转拼音时也发现,极少情况下,xpinyin返回了正确结果,pypinyin的结果反而有误。对于这些被发现的错误拼音,可以通过** load_phrases_dict **生成自定义词典来修正。

load_phrases_dict自定义词典

此外** load_single_dict ** 可以调整对于多音字其结果中的出现顺序: 比如以其人之道,还治其人之身一句中的‘还’字,默认情况下pypinyin是先转换为‘huai’的读音。

多音字的识别顺序 正如结果所示,多音字的顺序并不需要特别操心,pypinyin多数情况下对于成语、词组之类都可以自动识别并给出正确的拼音。 pypinyin还给出了轻声的音调等参数设置,感兴趣的可以去看pypinyin 0.37.0 文档。 值得一提的是,拼音的轻声确实是在成语接龙中稍微比较令人头疼的问题之一。比方对方说‘唐突西子’我接龙‘子虚乌有’,在我看来是完全可以的,但在pypinyin给出的拼音结果来看,这两个成语中的'zi'一个是轻声一个是三声,是不同的两个读音。而且实际上,我收集到的成语库中,根本就找不到以轻声的‘zi’开头的成语。所以如果让程序自动去查找接龙的成语的话,可能就不得不要考虑轻声声调的问题。 所以简单起见,干脆还是用load_phrases_dict 自定义词典将pypinyin认为的轻声都给改为原来的读音最是直截了当。

成语接龙杀手锏

成语来源包括网上下载到的TXT(PDF、Epub)文件,包括前述Github上的JSON文件等。中间过程不赘述了,无非是按照文件中的格式,正则表达式提取出成语(以及拼音),整理清洗后共计31063个条目。

中华成语大词典 折腾了一番,利用pypinyin将成语转拼音,再用pandas查询的结果。 不考虑轻声的拼音,整理出的成语接龙必杀技如下:

成语 拼音 成语 拼音 放荡形骸 fàng dàng xíng hái 言简意该 yán jiǎn yì gāi 春梦无痕 chūn mèng wú hén 弄兵潢池 nòng bīng huáng shi 唐临晋帖 táng lín jìn tiē 七拼八凑 qī pīn bā còu 发蒙解缚 fā méng jiě fu 张牙舞爪 zhāng yá wǔ zhǎo 作好作歹 zuò hǎo zuò dǎi 衣食税租 yī shí shuì zū 完美无疵 wán měi wú cī 敲骨榨髓 qiāo gǔ zhà suǐ 锯牙钩爪 jù yá gōu zhǎo 心潮澎湃 xīn cháo pēng pài 同源异派 tóng yuán yì pài 云期雨约 yún qī yǔ yuē 撮科打閧 cuō kē dǎ hòng 成龙配套 chéng lóng pèi tào 膏梁纨裦 gāo liáng wán fóu 无理取闹 wú lǐ qǔ nào 插圈弄套 chā quān nòng tào 长篇大套 cháng piān dà tào 服服贴贴 fú fú tiē tiē 老蚌珠胎 lǎo bàng zhū tāi 牙签玉轴 yá qiān yù zhóu 牙签犀轴 yá qiān xī zhóu 狼艰狈蹶 láng jiān bèi juě 东挪西凑 dōng nuó xī còu 做好做歹 zuò hǎo zuò dǎi 七担八挪 qī dān bā nuó 桑间之约 sāng jiān zhī yuē 血肉模糊 xuè ròu mó hu 恶迹昭着 è jì zhāo zhe 彰明昭着 zhāng míng zhāo zhe 一针见血 yī zhēn jiàn xiě 敌王所忾 dí wáng suǒ kài 百年之约 bǎi nián zhī yuē 不尴不尬 bù gān bù gà 为非作歹 wéi fēi zuò dǎi 轻描淡写 qīng miáo dàn xiě 丛轻折轴 cóng qīng zhé zhóu 孽根祸胎 niè gēn huò tāi 打闷葫芦 dǎ mèn hú lu 膏粱纨袴 gāo liáng wán kù 与时消息 yǔ shí xiāo xi 火耕水耨 huǒ gēng shuǐ nòu 唯唯否否 wěi wěi fǒu fǒu 瓮中捉鳖 wèng zhōng zhuō biē 丰神绰约 fēng shén chuò yuē 握粟出卜 wò sù chū bo 生搬硬套 shēng bān yìng tào 心惊胆颤 xīn jīng dǎn chàn 龙血凤髓 lóng xuè fèng suǐ 怀着鬼胎 huái zhe guǐ tāi 隐隐约约 yǐn yǐn yuē yuē 言简意赅 yán jiǎn yì gāi 人民城郭 rén mín chéng guō 牙签万轴 yá qiān wàn zhóu 失马塞翁 shī mǎ sài wēng 车马辐辏 chē mǎ fú còu 莺期燕约 yīng qī yàn yuē 相忘形骸 xiāng wàng xíng hái 杀人如蒿 shā rén rú hāo 秉钧当轴 bǐng jūn dāng zhóu 不落俗套 bù luò sú tào 依样葫芦 yī yàng hú lu 雕心鹰爪 diāo xīn yīng zhǎo 换骨脱胎 huàn gǔ tuō tāi 东补西凑 dōng bǔ xī còu 鹰心雁爪 yīng xīn yàn zhǎo 索垢寻疵 suǒ gòu xún cī 等米下锅 děng mǐ xià guō 捶骨沥髓 chuí gǔ lì suǐ 金屋娇娘 jīn wū jiāo niáng 刀枪入库 dāo qiāng rù kù 伐毛换髓 fá máo huàn suǐ 深入骨髓 shēn rù gǔ suǐ 力有未逮 lì yǒu wèi dǎi 深刺腧髓 shēn cì shù suǐ 病入骨髓 bìng rù gǔ suǐ 语简意赅 yǔ jiǎn yì gāi 心怀鬼胎 xīn huái guǐ tāi 敲膏吸髓 qiāo gāo xī suǐ 榆木疙瘩 yú mù gē da 倒廪倾囷 dǎo lǐn qīng qūn 汹涌澎湃 xiōng yǒng péng pài 吹唇唱吼 chuī chún chàng hǒu 敲骨吸髓 qiāo gǔ xī suǐ 膏粱纨裦 gāo liáng wán fóu 半间不界 bàn gān bù gà 汹涌彭湃 xiōng yǒng péng pài 鱼封雁帖 yú fēng yàn tiē 说好说歹 shuō hǎo shuō dǎi 赏善罚否 shǎng shàn fá fǒu 大醇小疵 dà chún xiǎo cī 东鳞西爪 dōng lín xī zhǎo 泣血稽颡 qì xuè jī sǎng 黏吝缴绕 nián lìn jiǎo rào 披毛求疵 pī máo qiú cī 鼓鼓囊囊 gǔ gǔ nāng nāng 证龟成鳖 zhèng guī chéng biē 钟鼎人家 zhōng dǐng rén jia 尺二冤家 chǐ èr yuān jia 四方辐辏 sì fāng fú còu 易子析骸 yì zi xī hái 阿家阿翁 ā gū ā wēng 同仇敌忾 tóng chóu dí kài 踉踉跄跄 liàng liàng qiàng qiàng 指囷相赠 zhǐ què xiāng zèng 将虾钓鳖 jiāng xiā diào biē 挠喉捩嗓 náo hóu liè sǎng 辞简义赅 cí jiǎn yì gāi 浊骨凡胎 zhuó gǔ fán tāi 丽藻春葩 lì zǎo chūn pā 雪泥鸿爪 xuě ní hóng zhǎo 坏裳为裤 huài shang wéi kù 牙签锦轴 yá qiān jǐn zhóu 若敖鬼馁 ruò áo guǐ něi 夹枪带棍 jiā qiāng dài gùn 肉眼凡胎 ròu yǎn fán tāi 魂飞胆颤 hún fēi dǎn chàn 半间半界 bàn gān bàn gà 魂惊胆颤 hún jīng dǎn chàn 龙游曲沼 lóng yóu qū zhǎo 榆木圪垯 yú mù gē da 翠围珠绕 cuì wéi zhū rào 救过不给 jiù guò bù gěi 剥肤及髓 bō fū jí suǐ 吹毛索疵 chuī máo suǒ cī 雪鸿指爪 xuě hóng zhǐ zhǎo 花枝招颤 huā zhī zhāo chàn 雷惊电绕 léi jīng diàn rào 一鳞片爪 yī lín piàn zhǎo 伐毛洗髓 fá máo xǐ suǐ 鸿泥雪爪 hóng ní xuě zhǎo 汹涌渒湃 xiōng yǒng pài pài 先斩后奏 xiān zhǎn hòu zòu 抽抽噎噎 chōu chōu yē yē 羹藜含糗 gēng lí hán qiǔ 八音迭奏 bā yīn dié zòu 鱼釜尘甑 yú fǔ chén zèng 嫌好道歹 xián hǎo dào dǎi 群轻折轴 qún qīng zhé zhóu 吹花嚼蕊 chuī huā jiáo ruǐ 余音缭绕 yú yīn liáo rào 一推两搡 yī tuī liǎng sǎng 插架万轴 chā jià wàn zhóu 幽期密约 yōu qī mì yuē 青鞋布袜 qīng xié bù wà 人涉卬否 rén shè áng fǒu 饰垢掩疵 shì gòu yǎn cī 东游西逛 dōng yóu xī guàng 一鳞半爪 yī lín bàn zhǎo 东拼西凑 dōng pīn xī còu 枉曲直凑 wǎng qǔ zhí còu 不识好歹 bù shí hǎo dǎi 片鳞半爪 piàn lín bàn zhǎo 不知好歹 bù zhī hǎo dǎi 批毛求疵 pī máo qiú cī 油头光棍 yóu tóu guāng gùn 骈首就逮 pián shǒu jiù dǎi 鸿篇巨着 hóng piān jù zhe 珠围翠绕 zhū wéi cuì rào 刀耕火耨 dāo gēng huǒ nòu 深耕易耨 shēn gēng yì nòu 四肢百骸 sì zhī bǎi hái 应名点卯 yìng míng diǎn mǎo 鸾鸣凤奏 luán míng fèng zòu 丰姿绰约 fēng zī chuò yuē 河东狮吼 hé dōng shī hǒu 椎肤剥髓 chuí fū bō suǐ 敲骨取髓 qiāo gǔ qǔ suǐ 土木形骸 tǔ mù xíng hái 自出机轴 zì chū jī zhóu 一鳞一爪 yī lín yī zhǎo 沦肌浃髓 lún jī jiā suǐ 秉钧持轴 bǐng jūn chí zhóu 袅袅娜娜 niǎo niǎo nuó nuó 同心敌忾 tóng xīn dí kài 龙肝凤髓 lóng gān fèng suǐ 刮垢磨痕 guā gòu mó hén 鼓吻奋爪 gǔ wěn fèn zhǎo 黄锺瓦缶 huáng zhōng wǎ fǒu 不间不界 bù gān bù gà 阿姑阿翁 ā gū ā wēng 不置可否 bù zhì kě fǒu 龙肝豹胎 lóng gān bào tāi 不越雷池 bù yuè léi shi 子丑寅卯 zi chǒu yín mǎo 娉婷袅娜 pīng tíng niǎo nuó 撮科打哄 cuō kē dǎ hòng 不哼不哈 bù hēng bù hā 没头苍蝇 méi tóu cāng ying 锦囊玉轴 jǐn náng yù zhóu 饥寒交凑 jī hán jiāo còu 瓮中之鳖 wèng zhōng zhī biē 雕心雁爪 diāo xīn yàn zhǎo 戳心灌髓 chuō xīn guàn suǐ 拉帮结派 lā bāng jié pài 进退可否 jìn tuì kě fǒu 痛入骨髓 tòng rù gǔ suǐ 放浪形骸 fàng làng xíng hái 进可替否 jìn kě tì fǒu 恨入骨髓 hèn rù gǔ suǐ 大大咧咧 dà dà liē liē 鸿飞雪爪 hóng fēi xuě zhǎo 十捉九着 shí zhuō jiǔ zhe 韩卢逐逡 hán lú zhú qūn 门不夜扃 mén bù yè jiōng 行眠立盹 xíng mián lì dǔn 整本大套 zhěng běn dà tào 沦浃肌髓 lún jiā jī suǐ 以规为瑱 yǐ guī wéi tiàn 空头支票 kōng tóu zhī piào 雪中鸿爪 xuě zhōng hóng zhǎo 羹藜唅糗 gēng lí hán qiǔ 背盟败约 bèi méng bài yuē 凿骨捣髓 záo gǔ dǎo suǐ 无所可否 wú suǒ kě fǒu 祝哽祝噎 zhù gěng zhù yē 澡垢索疵 zǎo gòu suǒ cī 献可替否 xiàn kě tì fǒu 不猧不魀 bù wō bù gà 厉行节约 lì xíng jié yuē 麟肝凤髓 lín gān fèng suǐ 蹈矩循彟 dǎo jǔ xún yuē 雾鳞云爪 wù lín yún zhǎo 三好两歹 sān hǎo liǎng dǎi 吹叶嚼蕊 chuī yè jiáo ruǐ 献替可否 xiàn tì kě fǒu 飞鸿雪爪 fēi hóng xuě zhǎo 重生爷娘 chóng shēng yé niáng 陈言老套 chén yán lǎo tào 露钞雪纂 lù chāo xuě zuǎn 修鳞养爪 xiū lín yǎng zhǎo 怨入骨髓 yuàn rù gǔ suǐ 由博返约 yóu bó fǎn yuē 龙鸣狮吼 lóng míng shī hǒu 浮花浪蕊 fú huā làng ruǐ 换骨夺胎 huàn gǔ duó tāi 龙蟠虎绕 lóng pán hǔ rào 吹毛求疵 chuī máo qiú cī 敲骨剥髓 qiāo gǔ bāo suǐ 说好嫌歹 shuō hǎo xián dǎi 就棍打腿 jiù gùn dǎ tuǐ 婆婆妈妈 pó po mā mā 握拳透爪 wò quán tòu zhǎo 劣迹昭着 liè jì zhāo zhe 口谐辞给 kǒu xié cí gěi 剔抽禿刷 tī chōu tū shuā 风姿绰约 fēng zī chuò yuē 滴水不羼 dī shuǐ bù chàn 瑶草琪葩 yáo cǎo qí pā 祝鲠祝噎 zhù gěng zhù yē 东闪西挪 dōng shǎn xī nuó 匡其不逮 kuāng qí bù dǎi 浃沦肌髓 jiā lún jī suǐ 义正辞约 yì zhèng cí yuē 桑中之约 sāng zhōng zhī yuē 犬牙鹰爪 quǎn yá yīng zhǎo 四体百骸 sì tǐ bǎi hái 根连株逮 gēn lián zhū dǎi

类似痛定思痛、防不胜防、数不胜数、微乎其微、忍无可忍、惺惺惜惺惺……这样的首尾两字均相同的成语也没有收入了。个人觉得这种只是属于死循环,而不是死胡同的必杀。 另外盛行的‘一个顶俩’没包括在上面,因为我收集到的成语词典中没有这一条。

参考资料 pypinyin 0.37.0 文档 xpinyin 0.5.6 SnowNLP: Simplified Chinese Text Processing 小明 NLP — 轻量级中文自然语言处理工具 利用python实现汉字转拼音的2种方法 Python中文分词工具大合集:安装、使用和测试 chinese-poetry: 最全中文诗歌古典文集数据库 【Python】使用python实现汉字转拼音(2018.12更新) 汉典网 Github: pwxcoo-chinese-xinhua image.png


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有